summaryrefslogtreecommitdiff
path: root/src/pages/shop/product/[slug].jsx
diff options
context:
space:
mode:
authorIT Fixcomart <it@fixcomart.co.id>2023-03-01 09:18:52 +0000
committerIT Fixcomart <it@fixcomart.co.id>2023-03-01 09:18:52 +0000
commita7abbf4ddc70068620e9f44b74dc162ce2e16ee2 (patch)
tree74f66253717515d364ce74bd8275015c1f829cbc /src/pages/shop/product/[slug].jsx
parent90e1edab9b6a8ccc09a49fed3addbec2cbc4e4c3 (diff)
parenta1b9b647a6c4bda1f5db63879639d44543f9557e (diff)
Merged in refactor (pull request #1)
Refactor
Diffstat (limited to 'src/pages/shop/product/[slug].jsx')
-rw-r--r--src/pages/shop/product/[slug].jsx31
1 files changed, 31 insertions, 0 deletions
diff --git a/src/pages/shop/product/[slug].jsx b/src/pages/shop/product/[slug].jsx
new file mode 100644
index 00000000..cc6924a3
--- /dev/null
+++ b/src/pages/shop/product/[slug].jsx
@@ -0,0 +1,31 @@
+import Seo from '@/core/components/Seo'
+import { getIdFromSlug } from '@/core/utils/slug'
+import productApi from '@/lib/product/api/productApi'
+import dynamic from 'next/dynamic'
+
+const BasicLayout = dynamic(() => import('@/core/components/layouts/BasicLayout'))
+const Product = dynamic(() => import('@/lib/product/components/Product'))
+
+export async function getServerSideProps(context) {
+ const { slug } = context.query
+ let product = await productApi({ id: getIdFromSlug(slug) })
+ if (product?.length == 1) {
+ product = product[0]
+ product.description = product.description.replaceAll('<p>', '||p||')
+ product.description = product.description.replaceAll('</p>', '||/p||')
+ product.description = product.description.replace(/(<([^>]+)>)/gi, ' ')
+ product.description = product.description.replaceAll('||p||', '<p>')
+ product.description = product.description.replaceAll('||/p||', '</p>')
+ product.description = product.description.trim()
+ }
+ return { props: { product } }
+}
+
+export default function ProductDetail({ product }) {
+ return (
+ <BasicLayout>
+ <Seo title={product?.name} />
+ <Product product={product} />
+ </BasicLayout>
+ )
+}